X-Git-Url: https://git.r.bdr.sh/rbdr/super-polarity/blobdiff_plain/8534e46e400268c5ceffb3b14f02cef39eedae8f..3de51c6f55d304f038df1b77c8ab346e2a187fe1:/Super%20Polarity/SuperPolarity.cs diff --git a/Super Polarity/SuperPolarity.cs b/Super Polarity/SuperPolarity.cs new file mode 100644 index 0000000..9311d53 --- /dev/null +++ b/Super Polarity/SuperPolarity.cs @@ -0,0 +1,161 @@ +#region Using Statements +using System; +using System.Collections.Generic; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Content; +using Microsoft.Xna.Framework.Graphics; +using Microsoft.Xna.Framework.Input; +using Microsoft.Xna.Framework.Storage; +using Microsoft.Xna.Framework.GamerServices; +using Microsoft.Xna.Framework.Media; +using Microsoft.Xna.Framework.Audio; +using SuperPolarity; +#endregion + +namespace SuperPolarity +{ + /// + /// This is the main type for your game + /// + public class SuperPolarity : Game + { + public GraphicsDeviceManager graphics; + SpriteBatch spriteBatch; + + public static int OutlierBounds; + + public Player Player; + + Screen EntryScreen; + + protected Song TitleSong; + protected Song GameSong; + protected SoundEffect GameOverSound; + + public SuperPolarity() + : base() + { + graphics = new GraphicsDeviceManager(this); + Components.Add(new GamerServicesComponent(this)); + + graphics.PreferMultiSampling = true; + graphics.PreferredBackBufferWidth = 1280; + graphics.PreferredBackBufferHeight = 720; + graphics.ToggleFullScreen(); + + Content.RootDirectory = "Content"; + ActorFactory.SetGame(this); + ParticleEffectFactory.SetGame(this); + ActorManager.SetGame(this); + ScreenManager.SetGame(this); + + EntryScreen = (Screen)new TitleScreen(this); + } + + /// + /// Allows the game to perform any initialization it needs to before starting to run. + /// This is where it can query for any required services and load any non-graphic + /// related content. Calling base.Initialize will enumerate through any components + /// and initialize them as well. + /// + protected override void Initialize() + { + base.Initialize(); + + InputController.RegisterEventForKey("fullScreenToggle", Keys.F11); + InputController.Bind("fullScreenToggle", HandleFullScreenToggle); + + EntryScreen.Initialize(); + + OutlierBounds = 100; + } + + protected void HandleFullScreenToggle(float value) + { + graphics.ToggleFullScreen(); + graphics.ApplyChanges(); + } + + /// + /// LoadContent will be called once per game and is the place to load + /// all of your content. + /// + protected override void LoadContent() + { + + MediaPlayer.IsRepeating = true; + GameSong = Content.Load("Sound\\polaritytheme.wav"); + GameOverSound = Content.Load("Sound\\gameover"); + + // Create a new SpriteBatch, which can be used to draw textures. + spriteBatch = new SpriteBatch(GraphicsDevice); + + ScreenManager.Push(EntryScreen); + + Player = new Player(this); + } + + /// + /// UnloadContent will be called once per game and is the place to unload + /// all content. + /// + protected override void UnloadContent() + { + // TODO: Unload any non ContentManager content here + } + + /// + /// Allows the game to run logic such as updating the world, + /// checking for collisions, gathering input, and playing audio. + /// + /// Provides a snapshot of timing values. + protected override void Update(GameTime gameTime) + { + if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape)) + Exit(); + + ScreenManager.Update(gameTime); + + Player.Update(); + + base.Update(gameTime); + } + + /// + /// This is called when the game should draw itself. + /// + /// Provides a snapshot of timing values. + protected override void Draw(GameTime gameTime) + { + GraphicsDevice.Clear(Color.White); + + spriteBatch.Begin(); + + ScreenManager.Draw(spriteBatch); + + spriteBatch.End(); + + base.Draw(gameTime); + } + + public void PlaySong(string songName) + { + // temp stuff before media manager is in + if (songName == "game") + { + MediaPlayer.Play(GameSong); + } + } + + public void GameOver() + { + var scoreScreen = new ScoreScreen(this); + scoreScreen.Initialize(); + + MediaPlayer.Stop(); + GameOverSound.Play(); + ScreenManager.Pop(); + ScreenManager.Push(scoreScreen); + } + } +}